package ai.people.netmon.framework.domain.system.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.people.core.validator.group.AddGroup;
import com.people.core.validator.group.UpdateGroup;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.time.LocalDateTime;

/**
 * @author yuanqinglong
 * @date 2022/3/22 13:38
 */
@Data
@TableName("nm_sys_user_info")
public class NmSystemUserInfo {


    @TableId(type = IdType.INPUT)
    @NotNull(message = "id不可为空", groups = UpdateGroup.class)
    @Null(message = "id非法", groups = AddGroup.class)
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long id;

    /**
     * 账户
     * @mock kobe
     */
    @NotEmpty(message = "账号为空")
    private String account;

    /**
     * 名字
     *  @mock kobe
     */
    private String name;

    /**
     * 昵称
     * @mock james
     */
    private String nickName;

    /**
     * 性别 0:未填写，1:男，2:女，3:保密
     * @mock 1
     */
    private Integer sex;

    /**
     * 头像
     * @mock http://uusssl.ddd
     */
    private String avatar;

    /**
     * 生日
     * @mock 1999-01-01
     */
    private String birthday;

    /**
     * 电子邮件
     * @mock 119222@163.com
     */
    private String email;

    /**
     * 电话
     * @mock 1192220022
     */
    private String phone;

    /**
     * 爱好类型
     * @mock 打篮球、踢足球
     */
    private String hobbyType;

    /**
     * 是VIP 1:是 0:不是
     * @mock 1
     */
    private Integer isVip;

    /**
     * 登录ip
     * @mock 192.168.1.1
     */
    private String loginIp;

    /**
     * 状态 1:正常，2:被锁定，3:被举报，4:已经过期
     * @mock 1
     */
    private Integer status;

    /**
     * 关注的账号/群组/主题数量上限
     * @mock 20
     */
    private Integer joinMaxCount;

    /**
     * 标签
     * @mock INT.POLITICS
     */
    private String label;

    /**
     * 归属地
     * @mock 北京
     */
    private String place;

    /**
     * ip白名单
     * @mock 192.168.1.1
     */
    private String ipWhiteList;

    /**
     * 创建时间
     * @ignore
     */
    private LocalDateTime createTime;

    /**
     * 备注
     *  @mock 这是备注
     */
    private String remark;

    /**
     * 过期时间
     * @mock 2022-12-12
     */
    private LocalDateTime expiryTime;

    /**
     * 访问来源
     * @mock telegram,tor
     */
    private String accessibleSource;

}
